#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""
数据库初始化脚本
用于初始化活动类型、测试数据等
"""

import os
import django

# 设置Django环境
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'interestDjango.settings')
django.setup()

from activities.models import ActivityType
from django.contrib.auth import get_user_model

User = get_user_model()


def init_activity_types():
    """初始化活动类型"""
    print("🎯 开始初始化活动类型...")
    
    types = [
        {
            'name': '运动健身',
            'description': '篮球、足球、跑步、健身、瑜伽等运动活动',
            'sort_order': 100,
            'is_system': True
        },
        {
            'name': '学习交流',
            'description': '读书会、技术分享、语言学习、考研交流等',
            'sort_order': 90,
            'is_system': True
        },
        {
            'name': '美食聚会',
            'description': '美食探店、烹饪分享、品茶聚会等',
            'sort_order': 80,
            'is_system': True
        },
        {
            'name': '亲子活动',
            'description': '亲子游玩、儿童教育、亲子手工等',
            'sort_order': 70,
            'is_system': True
        },
        {
            'name': '旅游出行',
            'description': '周边游、自驾游、徒步登山、露营等',
            'sort_order': 60,
            'is_system': True
        },
        {
            'name': '文化艺术',
            'description': '展览、音乐会、话剧、摄影、绘画等',
            'sort_order': 50,
            'is_system': True
        },
        {
            'name': '志愿公益',
            'description': '志愿服务、公益活动、环保行动等',
            'sort_order': 40,
            'is_system': True
        },
        {
            'name': '桌游聚会',
            'description': '剧本杀、狼人杀、桌游吧聚会等',
            'sort_order': 30,
            'is_system': True
        },
        {
            'name': '户外探险',
            'description': '攀岩、溯溪、探洞、野外求生等',
            'sort_order': 20,
            'is_system': True
        },
        {
            'name': '宠物相关',
            'description': '遛狗、宠物聚会、宠物摄影等',
            'sort_order': 10,
            'is_system': True
        },
    ]
    
    created_count = 0
    for type_data in types:
        obj, created = ActivityType.objects.get_or_create(
            name=type_data['name'],
            defaults=type_data
        )
        if created:
            created_count += 1
            print(f"✅ 创建活动类型：{obj.name}")
        else:
            print(f"⏭️  活动类型已存在：{obj.name}")
    
    print(f"\n✨ 活动类型初始化完成！新增 {created_count} 个，总计 {ActivityType.objects.count()} 个")


def check_superuser():
    """检查是否存在超级管理员"""
    print("\n👤 检查超级管理员账户...")
    
    superusers = User.objects.filter(is_superuser=True)
    if superusers.exists():
        print(f"✅ 已有 {superusers.count()} 个超级管理员账户")
        for user in superusers:
            print(f"   - {user.username} ({user.email})")
    else:
        print("⚠️  尚未创建超级管理员账户")
        print("   请运行: python manage.py createsuperuser")


def show_statistics():
    """显示数据库统计信息"""
    print("\n📊 数据库统计信息：")
    print(f"   用户数量：{User.objects.count()}")
    print(f"   活动类型：{ActivityType.objects.count()}")
    
    # 导入其他模型
    from activities.models import Activity, ActivityRegistration
    from social.models import ActivityComment, ActivityLike
    
    print(f"   活动数量：{Activity.objects.count()}")
    print(f"   报名记录：{ActivityRegistration.objects.count()}")
    print(f"   评论数量：{ActivityComment.objects.count()}")
    print(f"   点赞数量：{ActivityLike.objects.count()}")


def main():
    """主函数"""
    print("=" * 60)
    print("🚀 本地有约 - 数据库初始化脚本")
    print("=" * 60)
    
    # 初始化活动类型
    init_activity_types()
    
    # 检查超级管理员
    check_superuser()
    
    # 显示统计信息
    show_statistics()
    
    print("\n" + "=" * 60)
    print("✅ 初始化完成！")
    print("=" * 60)


if __name__ == '__main__':
    main()
